const { body, param } = require('express-validator')
const validate = require('../middleware/validate')
const Category = require('../models/NaviCategory')
const mongoose = require('mongoose')



//添加导航分类
exports.addCategory = validate([
  body("name").notEmpty().withMessage("分类名称不能为空"),
  body("sort").notEmpty().withMessage("排序序号不能为空"),
  body("name").custom(async (value) => {
    // 查询是否有这个分类
    const category = await Category.findOne({ name: value });
    if (category) {
      return Promise.reject("导航分类已经存在");
    }
    return true;
  })
]);

//删除导航分类
exports.delCategory = validate([
  param('id').not().isEmpty().withMessage('ID 是必需的'),
  param('id')
    .custom((value, { req }) => {
      return mongoose.Types.ObjectId.isValid(value)
    })
    .withMessage('ID 必须是有效的MongoDB ObjectId'),
  param('id').custom(async (value) => {
    // 查询是否有这个分类
    const category = await Category.findById(value)
    if (!category) {
      return Promise.reject('导航分类不存在')
    }
    return true
  }),
])
//更新导航分类
exports.updateCategory = validate([
  param('id').not().isEmpty().withMessage('ID是必需的'),
  param('id')
    .custom((value, { req }) => {
      return mongoose.Types.ObjectId.isValid(value)
    })
    .withMessage('ID 必须是有效的MongoDB ObjectId'),
  body('name').notEmpty().withMessage('导航分类名称不能为空'),
  body("sort").notEmpty().withMessage("排序序号不能为空"),
])
